package com.lyf.scm.plan.domain.remote.bigdata;

import com.lyf.scm.plan.domain.remote.bigdata.dto.*;
import com.rome.arch.core.clientobject.Response;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 *
 * @author 李兵兵
 * @date 2020/09/25
 */
@FeignClient(name = "BI-OLAP-SERVICE")
public interface BlOlapRemote {

    /**
     * 根据商品编码查询实际到货量（基本单位）、仓库出货量（基本单位） 维度：仓库、门店 查询时间范围：传时间段作为查询条件
     *
     * @param stockInAndOutDTO 股票进出dto
     * @return {@link Response<List<WarehouseReceiveQtyDTO>>}
     */
    @PostMapping("/productStock/getDayStockInAndOut")
    Response<List<WarehouseReceiveQtyDTO>> getStockInAndOut(@RequestBody StockInAndOutDTO stockInAndOutDTO);

    /**
     * 根据商品编码查询商品日均销量（箱规）销售数量(基本单位) 查询维度
     *
     * @param dayAvgQueryDTO 天avg查询dto
     * @return {@link Response<List<SkuSaleQtyDTO>>}
     */
    @PostMapping("/productSales/getBoxSalesDayAvg")
    Response<List<SkuSaleQtyDTO>> getBoxSalesDayAvg(@RequestBody DayAvgQueryDTO dayAvgQueryDTO);


    /**
     * 根据商品编码查询商品CPI、CPI排名、销量（箱规）排名、成交会员数排名、成交笔数排名 查询维度：渠道（包含全渠道和各个渠道）、省、市、商圈类型、门店 查询时间范围：周（传递查询周的周一作为时间条件）
     *
     * @param boxRankQueryDTO 盒子dto排名查询
     * @return {@link Response<List<ProductSaleDTO>>}
     */
    @PostMapping("/productRank/getProductBoxSalesRank")
    Response<List<ProductSaleDTO>> getProductBoxSalesRank(@RequestBody BoxRankQueryDTO boxRankQueryDTO);


    /**
     * 得到产品列表
     *
     * @param productListQueryDTO 产品列表查询dto
     * @return {@link Response<LayeredSkuCodePageDTO>}
     */
    @PostMapping("/product/getProductList")
    Response<LayeredSkuCodePageDTO> getProductList(@RequestBody ProductListQueryDTO productListQueryDTO);

    /**
     * 多维度查询接口
     * @author wuyuanhang
     * @date 2020/11/05
     * @param olapQueryMetadataDTO 产品列表查询dto
     * @return {@link Response<OlapQueryResultDTO>}
     */
    @PostMapping("/v1/trade_analysis/analysis_trade_order_item_model/analysis_trade_order_item_cube")
    Response<OlapQueryResultDTO> queryMultiDimensional(@RequestBody OlapQueryMetadataDTO olapQueryMetadataDTO);
}
